

#include <cstdio>
#include <vector>
#include <algorithm>
#include <memory>

#include <codecvt>
#include <string>
#include <locale>
using namespace std;

// static std::string gb2312_to_utf8(std::string const &strGb2312)
// {
//     std::vector<wchar_t> buff(strGb2312.size());
// #ifdef _MSC_VER
//     std::locale loc("zh-CN");
// #else
//     std::locale loc("zh_CN.GB18030");
// #endif
//     wchar_t* pwszNext = nullptr;
//     const char* pszNext = nullptr;
//     mbstate_t state = {};
//     int res = std::use_facet<std::codecvt<wchar_t, char, mbstate_t> >
//         (loc).in(state,
//             strGb2312.data(), strGb2312.data() + strGb2312.size(), pszNext,
//             buff.data(), buff.data() + buff.size(), pwszNext);

//     if (std::codecvt_base::ok == res)
//     {
//         std::wstring_convert<std::codecvt_utf8<wchar_t>> cutf8;
//         return cutf8.to_bytes(std::wstring(buff.data(), pwszNext));
//     }
//     return "";
// }


//#define debug2

#ifdef debug2
#define LOG_DEBUG(OUT) OUT
#else
#define LOG_DEBUG(...)
#endif
#define LOG()
vector<string> split(string &src, char flag) {
  vector<string> ans;
  int l,i,r;
  for(l=0,i=0,r=src.length();i<r;i++) {
    if (src[i]==flag) {
      ans.push_back(src.substr(l,i-l));
      l = i+1;
    }
  }
  if (l<src.length()) ans.push_back(src.substr(l,src.length()-l));
  return ans;
}

pair<int,int> get_min(string str) {
  if (str.length()==0) return {0,0};
  pair<int,int> ans;
  int mulk = 1;
  if (str[str.length()-1] == 'h') {
    mulk = 60;
    str = str.substr(0,str.length()-1);
  } else {
    str = str.substr(0,str.length()-3);
  }
  vector<string> tmp = split(str,'-');
  ans.first = int(std::stof(tmp[0]) * mulk);
  if (tmp.size()>1) ans.second = int(std::stof(tmp[1]) * mulk);
  else ans.second = ans.first;
  return ans;
}